package com.ai.module.mj.controller;

import com.ai.module.chat.common.ano.NoAuth;
import com.ai.module.chat.common.ano.NoLog;
import com.ai.module.mj.domain.vo.MidJourneyOperateVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull;
import org.junit.platform.commons.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;

/**
 * @author: heJinQin
 * @create: 2024-03-13 00:33
 * @description:
 **/
@Slf4j
@RestController
@RequestMapping("/member/midJourney")
@RequiredArgsConstructor
@Api(hidden = true)
public class MidJourneyController {

    @ApiOperation(value = "提交Imagine任务")
    @GetMapping("/miJourneyParam")
    @NoAuth
    @NoLog
    public List<MidJourneyOperateVo> miJourneyParam() {
         return getMidJourneyOperateParams();
    }

    @NotNull
    public static ArrayList<MidJourneyOperateVo> getMidJourneyOperateParams() {
        String s = "风格@卡通  水墨  线条  侏罗纪  logo  星云  油画  老照片  像素艺术  水彩  浮世绘艺术  纹身艺术  电影风格  油画  古代  日式动画  蓝图  概念艺术  太空  现实的  观赏性  沙丘  光速  赛博朋克  超现实的  超现代  未来的";
        String str1="画质@4K  8K  细节丰富  色彩饱满  清晰锐利  磨砂质感  笔触生动  真实感十足  立体感强烈";
        String str2="光线@自然照明  重点照明  背光  烛光  月光  霓虹灯  紫外线  美丽的照明  太阳光  聚光灯  量子点  光影交错";
        String str3="视角@航拍视角  全景图  长焦镜头  微距拍摄  特写  脸部特写  头部特写  鸟瞰图  侧身像  全身  肖像  长距拍摄  仰视  俯角  虚化  近景";
        String str4="情绪@开心  兴奋  欣喜若狂  生气  悲伤  厌恶  惊讶  喜怒无常  害怕  期盼";
        String str5="国风@汉服  旗袍  中式服饰  武侠  凤凰  功夫  昆曲  中式亭  刺绣  瓷器";
        String str6="效果@虚幻引擎  QM渲染  Corona室内渲染  C4D渲染  黑金色调  建筑渲染  单色  鲜艳  Octane 渲染  红黑色调  粉白色调  V-ray渲染";
        List<String> list = new ArrayList<>();
        list.add(s);
        list.add(str1);
        list.add(str2);
        list.add(str3);
        list.add(str4);
        list.add(str5);
        list.add(str6);
        ArrayList<MidJourneyOperateVo> midJourneyOperateParams = new ArrayList<>();

        for (String str : list) {
            MidJourneyOperateVo operateParam = new MidJourneyOperateVo();
            String[] split = str.split("@");
            String outName = split[0];
            String outList = split[1];
            String[] realOutList = outList.split(" ");
            operateParam.setName(outName);
            List<MidJourneyOperateVo.RealParam> realParams = new ArrayList<>();
            for (String innerName : realOutList) {
                if (StringUtils.isBlank(innerName)) {
                    continue;
                }
                MidJourneyOperateVo.RealParam realParam = new MidJourneyOperateVo.RealParam();
                realParam.setName(innerName);
                realParams.add(realParam);
            }
            operateParam.setRealParam(realParams);
            midJourneyOperateParams.add(operateParam);
        }
        return midJourneyOperateParams;
    }

}
